//
// Created by 余代宸 -Yu DaiChen on 2021/12/18
// QQ-E-MAIL:250074249@qq.com
//


#ifndef MINI_REDIS_BASIC_STRING_H
#define MINI_REDIS_BASIC_STRING_H

#include <stddef.h>

///@brief string字符串最大分配的内存
static int maxBufferSize = 1024 * 1024;

///@brief 使用别名
typedef char* arrayChar;
typedef const char * inputChar;

/**
 * @brief c语言的string串
 */
struct String
{
	///@brief buf 中已占用空间的长度
	size_t length;

	///@brief buf 中剩余可用空间的长度
	size_t free;

	///@brief 数据空间
	char buffer[];
};


inline size_t getLength(arrayChar inString);

inline size_t getFree(arrayChar inString);

inline struct String *getPointString(arrayChar chars);

inline int stringIsEmpty(arrayChar chars);

arrayChar newString(const void *init, size_t length);

void removeString(arrayChar chars);

arrayChar removeStringFree(arrayChar chars);

void clearString(arrayChar chars);

arrayChar extendedStringSpace(arrayChar chars, size_t addLength);

arrayChar copyString(arrayChar source, inputChar input, size_t length);

#endif //MINI_REDIS_BASIC_STRING_H
